import screen from "@/pages/wordPage/src/screen";

export default class{
    static  isColliding(obj1, obj2) {
        // 检查obj1是否在obj2的左侧
        if (obj1.x + obj1.width < obj2.x) {
            return false;
        }
        // 检查obj1是否在obj2的右侧
        if (obj1.x > obj2.x + obj2.width) {
            return false;
        }
        // 检查obj1是否在obj2的上方
        if (obj1.y + obj1.height < obj2.y) {
            return false;
        }
        // 检查obj1是否在obj2的下方
        if (obj1.y > obj2.y + obj2.height) {
            return false;
        }
        // 如果以上情况都没有发生，那么矩形碰撞了
        return true;
    }
    static  isCollidingXy(obj1, x,y) {
        let obj2={
            x:x,
            y:y,
            width:1,
            height:1
        }
        // 检查obj1是否在obj2的左侧
        if (obj1.x + obj1.width < obj2.x) {
            return false;
        }
        // 检查obj1是否在obj2的右侧
        if (obj1.x > obj2.x + obj2.width) {
            return false;
        }
        // 检查obj1是否在obj2的上方
        if (obj1.y + obj1.height < obj2.y) {
            return false;
        }
        // 检查obj1是否在obj2的下方
        if (obj1.y > obj2.y + obj2.height) {
            return false;
        }
        // 如果以上情况都没有发生，那么矩形碰撞了
        return true;
    }
    static findColliding(obj){
        let res=screen.objList.filter(item=>{
            if(item==obj)return false;
            if (item.canColliding==false)return false;
            if (this.isColliding(item,obj)) {
                return true;
            }
            return false;
            }
        )
        if (res!=undefined  && res !=null && res.length!=0){
            return res[0];
        }
        return null;
    }
    static  isOutOfBounds(obj, maxWidth, maxHeight) {
        // 检查矩形的右侧是否超出了最大宽度
        if (obj.x + obj.width > maxWidth-10) {
            return true;
        }
        // 检查矩形的底部是否超出了最大高度
        if (obj.y + obj.height > maxHeight-10) {
            return true;
        }
        // 检查矩形的左侧是否小于0（即超出左边界）
        if (obj.x < 10) {
            return true;
        }

        // 检查矩形的顶部是否小于0（即超出上边界）
        if (obj.y < 10) {
            return true;
        }



        // 如果以上情况都没有发生，那么矩形没有超出范围
        return false;
    }
    static adjustToBounds(obj, maxWidth, maxHeight) {
        // 调整x坐标，确保不超出左右边界
        if (obj.x < 10) {
            obj.x = 10;
        } else if (obj.x + obj.width > maxWidth - 10) {
            obj.x = maxWidth - 10 - obj.width;
        }

        // 调整y坐标，确保不超出上下边界
        if (obj.y < 10) {
            obj.y = 10;
        } else if (obj.y + obj.height > maxHeight - 10) {
            obj.y = maxHeight - 10 - obj.height;
        }

        // 返回调整后的对象（如果需要）
        return obj;
    }
    static   calculateTextWidth(txt,fontSize) {
        let ctx = screen.utilCanvas.getContext('2d');
        ctx.font = fontSize+'px Arial'; // 设置和 p5.js 相同的字体
        return ctx.measureText(txt).width;
    }
}